package test;

import java.util.Arrays;

/**
 * ArrayListToArrayMethod.java
 * 
 * @author wangbiao email:785497344@qq.com
 * @Description 测试ArrayList的toArray()方法是否存在非受检警告，以及给出的办法
 * @since 1.0.0
 * @Date 2013-7-4下午6:28:02
 */
public class ArrayListToArrayMethod {

	private int size;

	private transient Object[] elementData;

	public <T> T[] toArray(T[] a) {
		if (a.length < size) {
			// 通过局部变量来消除非受检警告，因为传入的数组类型是T[]，因此强转成T[]不会报错
			@SuppressWarnings("unchecked")
			T[] result = (T[]) Arrays.copyOf(elementData, size, a.getClass());
			return result;
		}
		System.arraycopy(elementData, 0, a, 0, size);
		if (a.length > size)
			a[size] = null;
		return a;
	}
}
